/**
 * 正则表达式
 * /正则表达式主体/修饰符(可选)
 * /runoob/i  是一个正则表达式。
 * runoob  是一个正则表达式主体 (用于检索)。
 * i  是一个修饰符 (搜索不区分大小写)。
 */

const str = "hello world!";

const reg = /l/;

/**
 * 修饰符
 * i : 忽略大小写
 * g : 匹配所有满足正则表达式的
 * m : 执行多行匹配
 */
const reg1 = /l/g;

// String.search 方法：返回第一次出现的下标
console.log("String.search.reg :", str.search(reg));

// String.replace 方法：根据正则表达式进行替换
console.log("String.replace.reg :", str.replace(reg, "L"));
console.log("String.replace.reg1 :", str.replace(reg1, "L"));

// String.split 方法：根据正则切割字符串
console.log("String.split.reg :", str.split(reg));

// String.match: 方法，找到一个或多个正则表达式的匹配
console.log("String.match.reg", str.match(reg));
console.log("String.match.reg1", str.match(reg1));

// RegExp.test 方法：内容验证
console.log("RegExp.test.reg:", reg.test(str));
console.log("RegExp.test.reg1:", reg1.test(str));

// RegExp.exec 方法：检索内容并返回
console.log("RegExp.exec.str:", reg.exec(str));
console.log("RegExp1.exec.str:", reg1.exec(str));

const notOnly = /^[l]$/g;
console.log("RegExp.test.notOnly :", notOnly.test(str));
console.log("RegExp.match.notOnly", str.match(notOnly));

// 用户名验证
/**
 * /^ 开始
 * [] 查找方括号中间的任何字符
 * a-z 小写字母
 * A-Z 大写字母
 * 0-9 数字 0-9
 * _ 下划线
 * $/ 结束
 */
const userPattern = /^[a-zA-Z0-9_-]{4,16}$/;
const userStr1 = "Admin";
console.log("userStr1.test.userPattern :", userPattern.test(userStr1));

// Email 正则验证
/**
 * 分为三部分
 * 第一部分：对每个字符进行校验，只能是字母+数字和_-.的组合
 */
const ePattern = /^[A-Za-z0-9_\-\.]+\@[A-Za-z0-9_\-\.]+\.[A-Za-z]{2,4}$/;
const email = "zhangziyi@jd.com";
console.log("email.test.ePattern :", ePattern.test(email));
